package org.example.crop.util;

import cn.hutool.core.util.IdUtil;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: xushuai
 * @name：MinioUtils
 * @Date：2024/3/5 11:27
 */
@Component
public class MinioUtils {

    @Autowired
    private MinioClient minioClient;

    public String upload(MultipartFile file) throws Exception {
        // 访问图片时,图片在minio中的路径
        String url = "http://10.39.7.21:9000/";
        //操作文件
        // 获取上传的文件的名称   meinv.png  --->  123121232131231.png
        String fileName = file.getOriginalFilename();
        // 动态生成唯一的图片名称   2024/03/05/12312312312312.png
        String realName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date())
                + IdUtil.getSnowflake().nextId()
                + fileName.substring(fileName.lastIndexOf("."));
        System.out.println("--------"+realName);
        // 构建上传的文件对象
        PutObjectArgs objectArgs = PutObjectArgs.builder()
                .object(realName) // 指定上传的文件名称
                .bucket("imgs")  // 指定上传文件的存储位置
                .contentType(file.getContentType()) // 指定上传的文件类型
                .stream(file.getInputStream(), file.getSize(), -1).build();
        // 将上传的文件保存到minio中
        minioClient.putObject(objectArgs);
        // 拼接文件的路径
        url+="imgs/"+realName;
        System.out.println("============"+url);
        return url;
    }
}
